import store from '../store'
import * as util from './util'

module.exports = {
	/**
	 * 获取当前运行的终端(App H5 小程序)
	 * https://uniapp.dcloud.io/platform
	 */
	getPlatform(){
	  // #ifdef APP-PLUS
	  const platform = 'App'
	  // #endif
	  // #ifdef APP-PLUS-NVUE
	  const platform = 'App'
	  // #endif
	  // #ifdef H5
	  const platform = 'H5'
	  // #endif
	  // #ifdef MP-WEIXIN
	  const platform = 'MP-WEIXIN'
	  // #endif
	  // #ifdef MP-ALIPAY
	  const platform = 'MP-ALIPAY'
	  // #endif
	  // #ifdef MP-BAIDU
	  const platform = 'MP-BAIDU'
	  // #endif
	  // #ifdef MP-TOUTIAO
	  const platform = 'MP-TOUTIAO'
	  // #endif
	  // #ifdef MP-QQ
	  const platform = 'MP-QQ'
	  // #endif
	  // #ifdef MP-360
	  const platform = 'MP-360'
	  // #endif
	  return platform
	},
	
	/**
	 * 显示成功提示框
	 */
	showSuccess(msg, callback){
	  	uni.showToast({
	  		title: msg,
	  		icon: 'success',
	  		mask: true,
	  		duration: 1500,
	  		success: function() {
	  			callback && (setTimeout(function() {
	  				callback();
	  			}, 1500));
	  		}
	  	});
	},
	
	/* 打开外部浏览器 */
	openBrowser(url) {
		// #ifdef MP-WEIXIN
		this.setClipboardData(url)
		return;
		// #endif

		// #ifdef APP-PLUS
		plus.runtime.openURL(url);
		return;
		// #endif

		// #ifdef H5
		window.location.href = url;
		return;
		// #endif
	},
	/* 设置系统剪贴板的内容 */
	setClipboardData(str){
		// #ifdef H5
		return;
		// #endif
		uni.setClipboardData({
		    data: str,
		    success: function () {
				uni.showToast({
					title: '已成功复制到剪贴板',
					duration: 2000
				})
		    }
		});
	},
	showModal(msg, callback) {
		uni.showModal({
			title: '温馨提示',
			content: msg,
			success: function(res) {
				if (res.confirm) callback && callback(res);
			},
		});
	},
	
	/**
	 * 显示失败提示框
	 */
	showError(msg, callback){
	  uni.showModal({
	    title: '温馨提示',
	    content: msg,
	    showCancel: false,
	    success(res) {
	      callback && callback()
	    }
	  })
	},
	
	/**
	 * 显示纯文字提示框
	 */
	showToast(msg) {
	  uni.showToast({
	    title: msg,
		position: 'bottom',
	    icon: 'none'
	  })
	},
	
	/**
	 * tabBar页面路径列表 (用于链接跳转时判断)
	 * tabBarLinks为常量, 无需修改
	 */
	getTabBarLinks(){
	  const tabBarLinks = [
		'pages/index/index',
		'pages/tools/index',
		'pages/article/index',
		'pages/user/index'
	  ]
	  return tabBarLinks
	},
	/* 打开服务端传过来的link */
	onLink(linkObj){
		if (linkObj.type === 'PAGE') {
		  this.navTo(linkObj.param.path, linkObj.param.query)
		  return;
		}
		
		if(linkObj.type === 'HTTP'){
			this.openBrowser(linkObj.param.query.url);
			return;
		}
		
		// #ifndef MP
		return;
		// #endif
		if(linkObj.type === 'WXMP'){
			this.navigateToMiniProgram(linkObj.param.query.appid,linkObj.param.query.path);
		}
	},
	
	/**
	 * 跳转到指定小程序
	 * @param {string}  appId
	 * @param {string}  path
	 */
	navigateToMiniProgram(appId, path){
		// #ifndef MP
		return;
		// #endif
		
		if (!appId || appId.length == 0) {
		  return false
		}
		uni.navigateToMiniProgram({
		  appId: appId,
		  path: path,
		  extraData: {},
		  success(res) {}
		})
		return true
	},
	
	/**
	 * 跳转到指定页面url
	 * 支持tabBar页面
	 * @param {string}  url
	 */
	navTo(url, query = {}){
		if (!url || url.length == 0) {
		  return false
		}
		// tabBar页面, 使用switchTab
		if (util.inArray(url, this.getTabBarLinks())) {
		  uni.switchTab({
		    url: `/${url}`
		  })
		  return true
		}
		// 生成query参数
		const queryStr = !uni.$u.test.isEmpty(query) ? '?' + uni.$u.queryParams(query,false) : ''
		// 普通页面, 使用navigateTo
		uni.navigateTo({
		  url: `/${url}${queryStr}`
		})
		return true
	},
	/**
	 * 发起支付请求
	 * @param {Object} 参数
	 */
	wxPayment(option){
		let options = Object.assign({
			payment: {},
			success: () => {},
			fail: () => {},
			complete: () => {},
		}, option);
		// APP支付
		// #ifdef APP-PLUS
		let orderInfo = {
			"appid": options.payment.appid, //appid
			"noncestr": options.payment.nonceStr, //随机字符串
			"package": "Sign=WXPay", //扩展字段	
			"partnerid": options.payment.partnerid, //商户号
			"prepayid": options.payment.prepay_id, //预支付交易会话ID
			"timestamp": Number(options.payment.timeStamp),
			"sign": options.payment.paySign
		}
		uni.requestPayment({
			provider: "wxpay",
			orderInfo: JSON.stringify(orderInfo), //微信、支付宝订单数据
			success: function(res) {
				options.success(res);
			},
			fail: function(res) {
				options.fail(res);
				console.log('fail:' + JSON.stringify(res));
			},
		});
		// #endif

		// 微信小程序支付
		// #ifdef MP-WEIXIN
		uni.requestPayment({
			provider: 'wxpay',
			timeStamp: options.payment.timeStamp,
			nonceStr: options.payment.nonceStr,
			package: 'prepay_id=' + options.payment.prepay_id,
			signType: 'MD5',
			paySign: options.payment.paySign,
			success(res) {
				options.success(res);
			},
			fail(res) {
				options.fail(res);
			},
			complete(res) {
				options.complete(res);
			}
		});
		// #endif
	},
	
	showLoading(title = '加载中', callback) {
		uni.showLoading({
			title: title,
			mask: true,
			success: function(res) {
				if (res.cancel) callback && callback(res);
			}
		});
		return;
	},
	
	hideLoading() {
		uni.hideLoading();
		return;
	},
	
	/* 登录过期，执行登录 */
	doLogin(callback) {
		uni.showModal({
		  title: '温馨提示',
		  content: '登录过期，需要您登录喔~',
		  confirmText: "去登录",
		  cancelText: "再逛会",
		  success: res => {
			if (res.confirm) {
				// #ifdef H5
				return uni.navigateTo({
					url:'/pages/login/login'
				})
				// #endif 
				
				// store.dispatch('Login')
				store.dispatch('Login').then((res)=>{
					callback && callback();
				}).catch((res)=>{
				});
			}
		  }
		})
	},
}
